package com.yc.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yc.common.handler.MapResultHandler;
import com.yc.entity.ClassInfo;
import com.yc.entity.User;
import com.yc.vo.Result;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Select;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

import java.util.Map;

/**
 * 班级表;(class_info)表服务接口
 * @date : 2023-6-27
 */
public interface ClassInfoService{

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    ClassInfo queryById(Integer id);

    /**
     * 分页查询
     *
     * @param classInfo 筛选条件
     * @param current 当前页码
     * @param size  每页大小
     * @return
     */
    Page<ClassInfo> paginQuery(ClassInfo classInfo, long current, long size,String major,String year);
    /**
     * 新增数据
     *
     * @param classInfo 实例对象
     * @return 实例对象
     */
    ClassInfo insert(ClassInfo classInfo);

    /**
     * 新增学生之前判断该学生的班级是否存在
     * @param cname 班级名
     * @return
     */
    ClassInfo selectByCname(String cname);

    boolean insert(List<ClassInfo> classInfos);

    /**
     * 更新数据
     *
     * @param classInfo 实例对象
     * @return 实例对象
     */
    int update(ClassInfo classInfo);

    /**
     * 查询是否有同样的班级名称
     * @param cname 班级名称
     * @return 是否成功
     */
    int getClassInfoByCname(String cname);



    boolean deleteById(Integer id);

    /**
     * 查询所有的班级名和id
     * @return
     */
    Map<String, String> selectAllCname(String counselor, String teacherId);
    /**
     * 查询是否有同样的班级名称
     * @param inputStream 输入流对象
     * @return 是否成功
     */
    int upload(InputStream inputStream);

    /**
     * 获得所有的专业以及年级信息
     */
    Map<String,List<String>> getAllInfo(String teacherId);

    /**
     * 添加班级信息
     * @param classInfo 班级信息
     * @return
     */
    int addClass(ClassInfo classInfo);

    /**
     * 通过老师工号查询当前时间上课的班级
     * @param username 老师工号
     * @return 当前上课的班级
     */
    List<ClassInfo> selectCnameByTeacherId(String username);

    List<String> queryYearnumber();

    /**
     * 通过教师Id查询当前时间上课的班级
     * @param teacherId 教师Id
     * @return 当前上课的班级
     */
    List<ClassInfo> selectClassByTeacherId(String teacherId);

    /**
     * 下载批量添加学生的模板
     *
     * @param response
     * @return
     * @throws IOException
     */
    Result<?> downloadTemplate(HttpServletResponse response) throws IOException;


    List<Map<String,Object>> selectBanji();

}
